package main;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JPanel;

/**
 * Klasa panelu, ktory przechowuje wszystkich przeciwnikow gracza
 * @author Maciej Krawczyk
 */
@SuppressWarnings("serial")
public class Opponents extends JPanel {

	/**Tablica przechowujaca panele przeciwnikow*/
	static OpponentPanel[] panels;
	/**Modyfikator zarzadcy rozkladem*/
	private GridBagConstraints c;
	
	/**
	 * Konstruktor tworzacy panel przechowujacy wszystkich przeciwnikow
	 * @param playerId numer przeciwnika
	 * @param players liczba przeciwnikow
	 * @param blind rola przeciwnika
	 */
	public Opponents(int playerId, int players, int blind) {
		this.setLayout(new GridBagLayout());
		this.setBackground(new Color(21, 134, 183));
		this.setOpaque(true);
		c = new GridBagConstraints();
		c.insets = new Insets(0, 8, 0, 8);
		c.gridy = 0;
		c.gridx = 0;
		panels = new OpponentPanel[players];
		
		for(int i = 0; i < players; i++) {
			if(i == playerId)
				continue;
			panels[i] = new OpponentPanel(i);
		}
		for(int i = 1; i < players; i++) {
			add(panels[(playerId + i) % players], c);
			c.gridx++;
		}
	}
	
	/**
	 * Mutator zwracajacy panel przeciwnika
	 * @param o numer przeciwnika
	 * @return panel wybranego przeciwnika klasy OpponentPanel
	 */
	public OpponentPanel getOpponent(int o) {
		return panels[o];
	}
	
	/**
	 * Metoda podswietla panel wybranego przeciwnika
	 * @param opId numer przeciwnika
	 */
	public void highlightOp(int opId) {
		panels[opId].highlightOp();
		panels[opId].setBackground(new Color(21, 134, 183));
		panels[opId].setOpaque(true);
	}
	
	public void resetFold(int opId) {
		panels[opId].setBackground(new Color(21, 134, 183));
	}
	
	/**
	 * Metoda "gasi" panel wybranego przeciwnika, ktory wykonal ruch
	 * @param opId numer przeciwnika
	 */
	public void putOffOp(int opId) {
		panels[opId].putOffOp();
	}
	
	/**
	 * Metoda okresla ile kart wymienil dany przeciwnik
	 * @param opId numer przeciwnika
	 * @param howMany ilosc wymienionych kart
	 */
	public void opExchange(int opId, int howMany) {
		panels[opId].opExchange(howMany);
	}
	
	/**
	 * Metoda usuwa panel wybranego przeciwnika
	 * @param i numer przeciwnika
	 */
	public void removeOp(int i) {
		remove(panels[i]);
	}
}
